/* TP 2, EJ 1 */

:- consult('../lib.pl').

% Personas
particular( luisa ).
particular( ruben ).
comerciante( zoraida ).
comerciante( ramon ).

% Clausulas de alcoholismo
alcoholica( B ) :- vino( B ).
alcoholica( B ) :- whisky( B ).
no_alcoholica( B ) :- agua( B ).
no_alcoholica( B ) :- gaseosa( B ).

% Tipo de bebidas
agua( villavicencio ).
agua( glaciar ).
gaseosa( cocacola ).
gaseosa( goliat ).
vino( bianchi ).
vino( trapiche ).
vino( richelieu ).
vino( cucagna ).
whisky( criadores ).
whisky( grants ).

% Origen de bebidas
nacional( bianchi ).
nacional( trapiche ).
importado( richelieu ).
importado( cucagna ).
nacional( criadores ).
importado( grants ).

% Costos
costo( villavicencio, 2 ).
costo( glaciar, 3 ).
costo( cocacola, 4 ).
costo( goliat, 1 ).
costo( bianchi, 7 ).
costo( trapiche, 12 ).
costo( richelieu, 13 ).
costo( cucagna, 18 ).
costo( criadores, 20 ).
costo( grants, 30 ).

% Recargos a comerciantes
recargo_comerciante( B, C, P ) :- no_alcoholica(B), 
	P is C*125/100.
	
recargo_comerciante( B, C, P ) :- vino(B), nacional(B),
	P is 130*C/100+1.
	
recargo_comerciante( B, C, P ) :- vino(B), importado(B), 
	max( 3, 20*C/100, Rec ), P is C + Rec.
	
recargo_comerciante( B, C, P ) :- whisky(B), 
	P is C * 150/100.

% Recargos a particulares
recargo_particular( B, C, P ) :- agua(B), 
	P is C*130/100, !.

recargo_particular( B, C, P ) :- gaseosa(B), 
	P is C*140/100, !.

recargo_particular( B, C, P ) :- alcoholica(B), nacional(B),
	P is C*160/100, !.
	
recargo_particular( B, C, P ) :- alcoholica(B), importado(B),
	P is C*170/100, !.

% Precio
precio( Beb, Comp, Res ) :- costo( Beb, Cos ), ( 
	comerciante(Comp),
		recargo_comerciante( Beb, Cos, Res ), ! ; % no se pq, pero sin el ! ejecuta los 2 ?!
		recargo_particular( Beb, Cos, Res )
).

/*
	precio( villavicencio, ramon, R ). --> 2.5
	precio( bianchi, ramon, R ). --> 10.1
	precio( richelieu, ramon, R ). --> 16
	precio( grants, ramon, R ). --> 45 
	
	precio( villavicencio, luisa, R ). --> 2.6
	precio( bianchi, luisa, R ). --> 11.2
	precio( criadores, luisa, R ). --> 32
	precio( grants, luisa, R ). --> 51
*/

